package dbconnector.service;

import java.util.Dictionary;
import java.util.List;

public interface IServiceRegisterManager {

	/**
	 * Zapisuje informacje w bazie o danej usłudze
	 * 
	 * @param info
	 *            Zawiera informacje dotyczace rejestrowanej usługi
	 * @return Id, pod który usługa została zarejestrowana
	 */
	public String registerService(IServiceInfo info);

	/**
	 * Zapisuje informacje w bazie o danej usłudze
	 * 
	 * @param id
	 *            , pod który usługa zostamoe zarejestrowana
	 * @param info
	 *            Zawiera informacje dotyczace rejestrowanej usługi
	 */
	public void registerService(String id, IServiceInfo info);

	/**
	 * Usuwa wpis dotyczący usługi z bazy danych
	 */
	public void unregisterService(String id);

	/**
	 * @return Zwaraca liste usług o podanej nazwie
	 */
	public List<IServiceInfo> getService(String serviceName);

	/**
	 * @return Zwraca liste uslug, które spelniaja podane wymagania
	 */
	public List<IServiceInfo> getService(String serviceName, Dictionary<String, String> properties);

	/**
	 * Aktualizuje timestamp aktywnych uslug i wyszukuje, te ktore nie zdazyly
	 * byc uaktualnione i zostaly usuniete z bazy pomimo tego, ze sa aktywne
	 * 
	 * @param list
	 *            lista z identyfikatorami aktywnych uslug
	 * @return lista z uslugami, ktore nadal sa aktywne, ale ich czas nadszedl
	 */
	public List<String> updateServicesList(List<String> list);
}
